/******************************************************************************
 * Copyright (C) 2014 ShenZhen YiHua Computer Co., Ltd.
 * All Rights Reserved.
 * 本软件为深圳怡化电脑股份有限公司开发研制。未经本公司正式书面同意，其他任何个人、团体
 * 不得使用、复制、修改或发布本软件.
 *****************************************************************************/
package net.dgg.dggcloud.core.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @ClassName CheckRegular
 * @Description 校验正则表达式
 * @author 谢泉武
 * @date  2014年10月29日 下午3:53:40 
 */
public class CheckRegular{
    
    /** 
     * @Title: checkDate 
     * @Description: 校验日期（年月日）
     * @param str
     * @return boolean    返回类型 
     */
    public static boolean checkDate(String str){
        
        String eL= "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))";   
        
        Pattern pattern = Pattern.compile(eL);
        
        Matcher matcher = pattern.matcher(str);
        
        boolean flag = matcher.matches();
        
        return flag;
    }
    
    /** 
     * @Title: checkDateTime 
     * @Description: 校验日期（年月日时分秒）
     * @param str
     * @return boolean    返回类型 
     */
    public static boolean checkDateTime(String str){
        
        String eL = "^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))\\s+([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$";
        
        Pattern pattern = Pattern.compile(eL);
        
        Matcher matcher = pattern.matcher(str);
        
        boolean flag = matcher.matches();
        
        return flag;
    }
    
    /** 
     * @Title: isEmail 
     * @Description: 校验邮件
     * @param str
     * @return boolean    返回类型 
     */
    public static boolean isEmail(String str){
        
        String eL = "^([a-zA-Z0-9]*[-_]?[a-zA-Z0-9]+)*@([a-zA-Z0-9]*[-_]?[a-zA-Z0-9]+)+[\\.][A-Za-z]{2,3}([\\.][A-Za-z]{2})?$";
        
        Pattern pattern = Pattern.compile(eL);
        
        Matcher matcher = pattern.matcher(str);
        
        return matcher.matches();
    }
    
    /** 
     * @Title: isMobile 
     * @Description: 校验手机
     * @param str
     * @return boolean    返回类型 
     */
    public static boolean isMobile(String str){       
        Pattern pattern = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");       
        Matcher matcher = pattern.matcher(str);       
        return matcher.matches();       
    } 
}
